iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
自我挑戰組

python的撞坑紀錄系列 第 4

reflex text

  • 分享至 

  • xImage
  •  

我又回來reflex啦!

因為之前叫做 Pynecone ,而在7月的時候改名...有些東西似乎不見了?
無所謂,繼續吧

  • 環境
    主要環境: vscode
    系統版本: wsl(Ubuntu 22.04.2 LTS)
    瀏覽器: google
    python -v: 3.10.6

這邊我是使用 wsl 做開發,不過說開發是開發,還是以給小白使用的介紹文為主。

  • 先看看demo
    這裡引入import reflex as rx,rx綁定狀態,即可開始撰寫,看return的部分就明白了,這裡的部分主要是對應到文字方面,以及某超連結邊框圓角,給予事件綁定。
    https://ithelp.ithome.com.tw/upload/images/20230915/201413253xqSpJzDRX.png

最後則是使用以下程式碼啟動整個程式。

# Add state and page to the app.
app = rx.App()
app.add_page(index)
app.compile()
  • 目錄結構
    reflex的前端為 nextjs,都放在 .web的資料夾內,不過不需要動到該區域,直接理解成我們寫的 python 會直接轉成 js,在掛載到 pages裡面,接著再由nextjs 啟動 js的部分。
    https://ithelp.ithome.com.tw/upload/images/20230915/201413254VXDsnAsii.png

這裡可以很明顯地看到不是使用reflex run,而是 next dev
https://ithelp.ithome.com.tw/upload/images/20230915/20141325ERLgjIYH88.png

  • assets
    存放靜態資源,圖片,字體,css 等。
    一般來說是這樣呼叫
reflex.image(src = "image.jpg")

而我們主要寫程式碼的地方還是在我們的demo裡面,如下圖可以看到my_reflex_app/my_reflex_app.py,從這裡直接修改(默認)。

https://ithelp.ithome.com.tw/upload/images/20230915/20141325dazYbq6MuK.png

  • config
    這裡會出現一個配置,不過新版的比舊版的少了許多,大概是要自己去寫的吧。

https://ithelp.ithome.com.tw/upload/images/20230915/20141325iL0XwpEYhk.png

翻了翻 config.py,發現到都是設置好的,本地前端端口都是默認3000。
https://ithelp.ithome.com.tw/upload/images/20230915/20141325TsaDJ06VK3.png

對於新手來說先別搞這麼複雜,先可以弄出一個基本的樣板再說。

組件

組件是建構 reflxe前端的必需品,而組件是可以拆開、重組的,如果有翻到 config.py的話,可以看到 props 具體的解釋是元組和字典。


文字

我們先把目前不需要的程式碼先給刪除。

# ...
class State(rx.State):
    """The app state."""

    pass


def index() -> rx.Component:
    return 
# ... 

這邊我們先來查看一下文字的部分。

# ...
return rx.vstack(
    rx.text("Hello World!", as_="i"),
    rx.text("Hello World!", as_="s"),
    rx.text("Hello World!", as_="mark"),
    rx.text("Hello World!", as_="sub"),
)

按照文檔,會顯示以下部分。
https://ithelp.ithome.com.tw/upload/images/20230915/20141325KbPdicQn4O.png

這裡的類別是 str,默認的標籤是,觸發事件為on_mounton_unmount,加載上去的時候是使用前者的事件處理程序,組件從頁面刪除的時候則使用後者,而不是在頁面刷新的時候調用。

標題

這個部分就比較簡單了,直接上程式碼。

# ...
return rx.vstack(
        rx.heading("Hello World!", size="sm", color="red"),
        rx.heading("Hello World!", size="md", color="blue"),
        rx.heading("Hello World!", size="lg", color="green"),
        rx.heading("Hello World!", size="xl", color="blue"),
        rx.heading("Hello World!", size="2xl", color="red"),
        rx.heading("Hello World!", size="3xl", color="blue"),
        rx.heading("Hello World!", size="4xl", color="green"),
    )

css的部分可以直接編寫在後面。
默認標籤為,size的部分為4xl”| “3xl”| “2xl”| “xl”| “LG”| “MD”| “SM”| “xs”

https://ithelp.ithome.com.tw/upload/images/20230915/20141325ona7bws2Li.png

span

# ...
return rx.box(
    "Write some ",
    rx.span("stylized ", color="red"),
    rx.span("text ", color="blue"),
    rx.span("using spans.", font_weight="bold"),
)

結果如下。
https://ithelp.ithome.com.tw/upload/images/20230915/201413257krXK39JQi.png

一般來說大家有寫過網頁都還挺熟的,就不贅述了。

Markdown

# ...
return rx.vstack(
    rx.markdown("# Hello World!"),
    rx.markdown("## Hello World!"),
    rx.markdown("### Hello World!"),
)

# rx.markdown(
#     """
# Support us at **[Reflex](https://pynecone.io)**.
# Format your `inline_code` easily.
# """
# )

# rx.markdown(r"$ \int_a^b x^2 dx $")
# 官網的程式碼可直接查找

這裡使用的是 dict 類別,不是和之前一樣是 str 囉。

Highlight

# ...
return rx.highlight(
    "Hello World, we have some highlight",
    query=["World", "some"],
    styles={
        "px": "2",
        "py": "1",
        "rounded": "full",
        "bg": "grey",
    },
)
# ...

結果如下。
https://ithelp.ithome.com.tw/upload/images/20230915/20141325TJyUmJVRa9.png

query的部分使用的是list,凸顯文本。
styles的部分是 dict。

到這邊文字的部分基本上結束了,之後再把表格甚麼的慢慢寫上來吧。


上一篇
python 測試也是個大坑
下一篇
Form 介紹-1
系列文
python的撞坑紀錄33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
arguskao
iT邦新手 3 級 ‧ 2023-09-16 11:44:09

系統版本: wsl
請問wsl 是?

看更多先前的回應...收起先前的回應...
xiaLotus iT邦新手 4 級 ‧ 2023-09-16 14:12:50 檢舉

抱歉少打了,我這邊是windows子系統,所以在打的時候我忘了有這荏QQ
/images/emoticon/emoticon06.gif

arguskao iT邦新手 3 級 ‧ 2023-09-16 14:22:46 檢舉

那我用mac,應該還是可以學的吧?

xiaLotus iT邦新手 4 級 ‧ 2023-09-16 14:26:03 檢舉

可以啊,開虛擬環境venv或是我前面寫的poetry,翻翻文件都有下載方式

arguskao iT邦新手 3 級 ‧ 2023-09-16 14:27:46 檢舉

那我就繼續追隨了

我要留言

立即登入留言